
(defvar c-mode-syntax-table nil "Syntax table in use in C-mode buffers.")

(defvar c-mode-abbrev-table nil "Abbrev table in use in C-mode buffers.")

(defvar c-mode-map nil "Keymap used in C mode.")

(defconst c-indent-level 2 "*Indentation of C statements with respect to containing block.")

(defconst c-brace-offset 0 "*Extra indentation for braces, compared with other text in same context.")

(defconst c-argdecl-indent 5 "*Indentation level of declarations of C function arguments.")

(defconst c-label-offset -2 "*Offset of C label lines and case statements relative to usual indentation.")

(defconst c-continued-statement-indent 2 "*Extra indent for lines not starting new statements.")

(defconst c-auto-newline nil "*Non-nil means automatically newline before and after braces,
and after colons and semicolons, inserted in C code.")

(defun c-mode nil "\
Major mode for editing C code.
Expression and list commands understand all C brackets.
Tab indents for C code.
Meta-Control-Q indents all lines within following bracket-grouping.
Comments are delimited with /* ... */.
Paragraphs are separated by blank lines only.

Meta-Control-H puts mark at end of C function and dot before it.
Delete converts tabs to spaces as it moves back.

Variables controlling indentation style:
 c-auto-newline
    Non-nil means automatically newline before and after braces,
    and after colons and semicolons, inserted in C code.
 c-indent-level
    Indentation of C statements within surrounding block.
    The surrounding block's indentation is the indentation
    of the line on which the open-brace appears.
 c-continued-statement-offset
    Extra indentation given to a substatement, such as the
    then-clause of an if or body of a while.
 c-brace-offset
    Extra indentation for line if it starts with a brace.
 c-argdecl-indent
    Indentation level of declarations of C function arguments.
 c-label-offset
    Extra indentation for line that is a label, or case or default.

Turning on C mode calls the value of the variable c-mode-hook with no args,
if that value is non-nil." (interactive) (byte-code "È� �?�A � �����#����#����#����#����#����#����#����#�B È�!�������\"���?�� �� ���!����\"����\"����\"����\"����\"����\"����\"����\"����\"����\"��@ �\"��A �\"��B �\"��C �D \")�� �!��E �!��F 	P���E �!��
��E �!����E �!��G ���E �!��H ���E �!��I ���E �!��J ���E �!��K ���E �!����L �!�K�K�M !�" [c-mode-map major-mode mode-name nil local-abbrev-table c-mode-abbrev-table c-mode-syntax-table i paragraph-start page-delimiter paragraph-separate indent-line-function comment-start comment-end comment-column comment-start-skip comment-indent-hook parse-sexp-ignore-comments t c-mode-hook kill-all-local-variables make-sparse-keymap define-key "{" electric-c-brace "}" ";" electric-c-semi ":" electric-c-terminator "" mark-c-function "" indent-c-exp "" backward-delete-char-untabify "	" c-indent-line use-local-map c-mode "C" define-abbrev-table 0 make-syntax-table set-syntax-table modify-syntax-entry 123 "(}" 125 "){" 91 "(]" 93 ")[" 92 "\\" 47 "  14" 42 "  23" 43 " " 45 61 37 60 62 39 "\"" make-local-variable "^$\\|" "/* " " */" 32 "/\\*+ *" c-comment-indent boundp funcall] 63))

(defun c-comment-indent nil (byte-code "�n� l?� ��  ��!�n� ��!�  iT])�" [comment-column 0 skip-chars-backward " 	" calculate-c-indent] 10))

(defun electric-c-brace (arg) "\
Insert character and correct line's indentation." (interactive "P") (byte-code "Ĉ�	?�# l�# ���!�n)�# 
�  � �! Ĉ
�U c��!�
�? `S��� ��!�@ Ĉ��L Tb�M Ĉ��!)�V Ĉ�h �b���	!!)�m ��	!!)�" [insertpos arg c-auto-newline last-command-char nil skip-chars-backward " 	" newline c-indent-line delete-char -1 self-insert-command prefix-numeric-value] 28))

(defun electric-c-semi (arg) "\
Insert character and correct line's indentation." (interactive "P") (byte-code "� �	!� ��	!!�" [c-auto-newline arg nil electric-c-terminator self-insert-command prefix-numeric-value] 7))

(defun electric-c-terminator (arg) "\
Insert character and correct line's indentation." (interactive "P") (byte-code "ň�`
?�4 l�4 �� ���!�g�U�2 �`	\"�8�1 �8�1 �8))?�i c��!��T � ?�T `S��� ��!���` Tb�a ň��!)�j ň�| �b���
!!)�� ��
!!*�" [insertpos end arg pps last-command-char nil c-auto-newline beginning-of-line skip-chars-forward " 	" 35 parse-partial-sexp 3 4 5 c-indent-line c-inside-parens-p newline delete-char -1 self-insert-command prefix-numeric-value] 32))

(defun c-inside-parens-p nil (byte-code "���" [nil (byte-code "���`� �`\"�db��`��#� ef�U))�" [narrow-to-region beginning-of-defun scan-lists -1 1 40] 8) ((error (byte-code "�" [nil] 2)))] 5))

(defun c-indent-line (&optional whole-exp) "\
Indent current line as C code.
Argument means shift any additional lines of grouping
rigidly with thls line." (interactive "P") (byte-code "ˈ� ���d`Z� �`��?�$ =�$ ��!�r =�k ���� ���!�g�U����!�`��� ���!���
#�b �b ��!Tb�i)*��o � ��� ��!�<�� @��� ˈ��!�� ��!�� ���!���!)�� �\\]��� ˈg�U�� Z��� ˈg�U�� 	\\��� ˈ��!�iZ���!�� dZ`V�� dZb�� ˂0�	`\"�j�dZ`V�dZb�ˈ
�0�	b���!�`��	b���!�`��
	V)�0�	
�$-�" [indent beg end shift-amt pos t star-start c-label-offset c-indent-level c-brace-offset whole-exp nil calculate-c-indent beginning-of-line looking-at "#" skip-chars-forward " 	" 42 skip-chars-backward " 	
" re-search-forward "/\\*[ 	]*" match-beginning 0 current-indentation "case[ 	]" "[A-Za-z]" forward-sexp 1 ":" 125 123 zerop delete-region forward-line indent-code-rigidly] 60))

(defun calculate-c-indent (&optional parse-start) "\
Return appropriate indentation for current line as C code.
In usual case returns an integer: the column to indent to.
Returns nil if line starts inside a string, t if in a comment." (byte-code "�� �`���
� 
b� � �`W�3 `���`�#��	A@��� ��	8�= �	8�F �	8�� ?�s b���!�g�U�\\ ˂p �
�b e!�h�U�n �p � �� �f�\"�� Tb�i�� b��!�h�>?�� �!�i\\�� b����!���!���!�� g�U�� ��!�� ��!�� ���#�� ��!��� �`W�� i)�� � \\,)�" [indent-point state parse-start containing-sexp c-argdecl-indent c-continued-statement-indent nil c-indent-level beginning-of-line beginning-of-defun parse-partial-sexp 0 3 4 skip-chars-forward " 	" 123 c-backward-to-noncomment 41 current-indentation /= (nil 44 59 125 58 123) c-backward-to-start-of-if forward-char 1 " 	
" looking-at "#\\|/\\*\\|case[ 	
]\\|[a-zA-Z0-9_$]*:" 35 forward-line "/\\*" search-forward "*/" move ":"] 52))

(defun c-backward-to-noncomment (lim) (byte-code "��	?�M ��
\"�`��`�
\\Y�# ���!���!)�. ��
�#�I � ���!���!�C `
X��I ��b�� *�" [odot stop lim t nil skip-chars-backward " 	
" 2 forward-char -2 looking-at "\\*/" search-backward "/*" move beginning-of-line skip-chars-forward " 	" "#"] 19))

(defun c-backward-to-start-of-if (lim) (byte-code "h�U� ��!� Ĉ� �`X� Tb� Ĉ��!�" [lim 41 forward-sexp -1 nil beginning-of-line skip-chars-forward " 	"] 7))

(defun mark-c-function nil "\
Put mark at end of C function, dot at beginning." (interactive) (byte-code "���`!�� ��`!�� �� �" [nil push-mark end-of-defun beginning-of-defun backward-paragraph] 7))

(defun indent-c-exp nil "\
Indent each line of the C grouping following dot." (interactive) (byte-code "��	C�������`�
	���!)��	��m?�. ?��
��	��?�K m�J �?�� ���`� �`		%��@�
�AA@�s AA@�Y�� AA@��� ����\"@�� � �� ����\"@�� ��\"@?�� � �� ����!�� ��\"@�� ��!�� ���< �
�X�� ��� ���� 	���
\"�� 	��� ��
V�AS���� �
W��BT���	���!���!�l�0	��@�9@�Y�a��	!�h�>?�X�	!��� \\��]@�)�z�@�m@[�n�!��\")���!����!�����!���!)���\\]�����g�U��Z�����g�U��\\�����iU��g�U���`� �`\"�j��' ).
�" [indent-stack nil restart outer-loop-done inner-loop-done state ostate this-indent last-sexp odot next-depth last-depth innerloop-done t val c-label-offset c-indent-level c-brace-offset 0 forward-sexp 1 parse-partial-sexp end-of-line nthcdr 4 c-indent-line indent-for-comment forward-line 3 /= skip-chars-forward " 	" c-backward-to-noncomment (nil 44 59 125 58) c-backward-to-start-of-if 2 current-indentation calculate-c-indent setcar looking-at "case[ 	]" "[A-Za-z]" ":" 125 123 35 delete-region beginning-of-line] 92))
